package training;

import java.util.Arrays;

public class Training {
    /**
     * 1. 编写一个方法：实现输出指定范围的所有质数。
     */
    public static boolean isPrime(int number){
        for(int i = 2;i < number;i++){
            if(number % i == 0){
                return false;
            }
        }
        return true;
    }
    public static void printPrime(int start,int end){
        for(int i = start;i <= end;i++){
            if(isPrime(i)){
                System.out.println(i + "是质数");
            }
        }
    }
    /**
     * 2. 编写一个方法：求1! + 2! +3! + ... + n!（阶乘和）
     */
    public static long multi(int number){
        long result = 1;
        for(int i = 1;i <= number;i++){
            result *= i;
        }
        return result;
    }
    public static long sumMulti(int number){
        long sum = 0;
        for(int i = 1;i <= number;i++){
            sum += multi(i);
        }
        return sum;
    }

    /**
     * 3. 编写一个方法：实现给定一个数组的去重
     */
    public static int [] distinct(int [] ary){
        int [] tempAry = new int[ary.length];
        int length = 0;
        for(int i = 0;i < ary.length;i++){
            boolean flag = false;
            for(int j = 0;j < length;j++){
                if(ary[i] == tempAry[j]){
                    flag = true;
                    break;
                }
            }
            if(!flag){
                tempAry[length++] = ary[i];
            }
        }
        int [] newAry = new int[length];
        for(int i = 0;i < newAry.length;i++){
            newAry[i] = tempAry[i];
        }
        return newAry;
    }

    /**
     * 4. 编写一个方法：随机生成一组双色球号码，要求将6颗红球和1颗蓝球放到数组中返回
     * 规则：一组双色球号码由6颗红球+1颗蓝球组成，其中红球取值范围1-33，蓝球1-16，6颗红球彼此不能重复。
     */
    public static int [] generateBall(){
        int [] balls = new int[7];
        // 生成红球
        for(int i = 0;i < 6;i++){
            int redBall = (int)(Math.random() * 33 + 1);
            boolean flag = false;
            for(int j = 0;j < i;j++){
                if(redBall == balls[j]){
                    flag = true;
                    i--;
                    break;
                }
            }
            if(!flag){
                balls[i] = redBall;
            }
        }
        // 生成蓝球
        balls[6] = (int)(Math.random() * 16 + 1);
        return balls;
    }

    public static void main(String[] args) {
//        printPrime(10,100);
//        System.out.println(sumMulti(20));
//        int [] ary = {1,2,1,5,2,3,1,2,3,4,5,1};
//        int [] newAry = distinct(ary);
//        System.out.println(Arrays.toString(newAry));
        int [] balls = generateBall();
        System.out.println(Arrays.toString(balls));
    }
}
